import os
import time
import unittest

from selenium import webdriver


class MyTest1(unittest.TestCase):
    """
    单元测试类，继承unittest.TestCase
    """

    @classmethod
    def setUpClass(cls) -> None:
        """
        每一个测试方法的初始化方法
        :return:

        打开浏览器
        :param br: gc=谷歌浏览器(默认)；ff=火狐浏览器；ie=ie浏览器
        :param ex: 对应driver的路径，默认在项目的lib目录
        :return: 打开成功失败
        """

        # 使用用户文件加载缓存和配置chrome的安装路径
        # 创建一个chrome的配置项对象
        option = webdriver.ChromeOptions()
        # 获取用户文件路径
        userfile = os.environ["USERPROFILE"]

        # 添加用户文件配置
        # 使用缓存，也使用了cookie
        option.add_argument("--user-data-dir=%s\\AppData\\Local\\Google\\Chrome\\user data"
                            % userfile)
        # 配置chrome安装路径
        # option.binary_location = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

        # 打开浏览器
        # driver就相当于打开的浏览器
        ex = "../lib/conf/chromedriver.exe"
        cls.driver = webdriver.Chrome(options=option, executable_path=ex)
        cls.driver.implicitly_wait(10)

    def test_login(self):
        """
        测试方法
        注意：测试方法的命名，一定要以testxxxx的形式出现
        :return:
        """
        print("测试登录...")
        # 登录
        # 找到元素
        self.driver.get('http://testingedu.com.cn:8000/index.php/Home/user/login.html')
        el1 = self.driver.find_element_by_xpath('//*[@id="username"]')
        # 操作元素
        el1.send_keys("13800138006")
        el2 = self.driver.find_element_by_xpath('//*[@id="password"]')
        el2.send_keys("123456")
        el3 = self.driver.find_element_by_xpath('//*[@id="verify_code"]')
        el3.send_keys("1111")
        el4 = self.driver.find_element_by_xpath('//*[@id="loginform"]/div/div[6]/a')
        el4.click()
        print('登录完成...')

    def test_order(self):
        """
        这是实例方法，不是测试方法
        :return:
        """
        print("测试订单ing...")
        self.driver.find_element_by_xpath('/html/body/div[1]/div/div/ul/li[1]/a').click()
        time.sleep(5)
        print('订单打开完成...')

    @classmethod
    def tearDownClass(cls) -> None:
        """
        每一个测试方法的结束方法
        :return:
        """
        print("结束")
